#ifndef _PMU_H_

#define _PMU_H_

#define HLD_MAX_NAME_SIZE		16			/* Max device name length */
// io cmd
#define PMU_SHOW_TYPE_CMD       0
#define PMU_LOAD_BIN_CMD        1
#define PMU_RESUME_STATUS       2
#define PMU_PANNEL_POWER_STATUS 3
#define PMU_RERVERD_WRITE 4

//Ben 130529#1
typedef enum
{
	IR_EXIT=0,
	KEY_EXIT,
	CEC_EXIT,
	RTC_EXIT
}PMU_EXIT_FLAG;

typedef enum
{
  COLD_BOOT=0,
  PMU_RESUME
}PMU_RESUME_FLAG,*pPMU_RESUME_FLAG;

typedef enum
{
  SHOW_BANK =0,
  SHOW_OFF,
  SHOW_TIME
}PANNEL_SHOW_TYPE;

typedef enum
{
  PANNLE_POWER_ON =0,
  PANNEL_POWER_OFF,
}PANNEL_POWER,*pPANNEL_POWER;


/* PMU CEC registers */

enum  PANEL_TYPE
{
	PAN_TYPE_CH455 = 0,
	PAN_TYPE_FD650K,
	PAN_TYPE_FD650K_ISP,
};


typedef struct
{
  UINT8* buf;
  UINT32 len;  
}PMU_BIN,*pPMU_BIN; 

struct pmu_device{

	struct pmu_device *next;
	UINT32 type;
	UINT8 name[HLD_MAX_NAME_SIZE];
	UINT32 flags;

	UINT32 hardware;
	UINT32 busy;
	UINT32 minor;

	void *priv;	
	UINT32 base_addr;	

};
RET_CODE pmu_io_control(struct pmu_device * dev,UINT32 cmd, UINT32 param);
extern PMU_EXIT_FLAG get_powerup_status(void);

#endif 
